Software is often developed using multiple types of computer systems. For example, large organizations have mainframe computers, workstation computers, departmental server computers, and personal computers being used by individuals within the organization. While this diversity allows tremendous flexibility to meet price and performance needs for various computing functions, it adds complexity to the application development process.
Many development organizations require a Unix.TM. system on an engineer's desk for software development, and a personal computer on the same desk for office automation tasks. This effectively doubles the cost per engineer to the organization. In addition, all of these computer systems must be supported, which further increases the amount of support training and system administration staff needed by the organization. It also increases the amount of developer training necessary for using multiple development environments, as well as for the new technology.
In prior art systems, when software needs to be developed for a particular target computer system, there were two options. The first option is to develop the software on the target computer system, using existing text editors, compilers, etc. for the target computer system. This works very well when code is being developed only for one target computer system. However, when code needs to be developed that will run on several different target computer systems, it requires that each of these computer systems be accessible to the developer. For most efficient use of the developer's time, each of the target computer systems must also be present on the developer's desk, which is expensive, and sometimes difficult to arrange.
One difficulty with developing on several different computer systems, is that the developer must learn the environment of each of the target computer systems. This is time consuming, and if a developer moves often between different environments, this can become very confusing. Furthermore, the source code for the project must also be moved to each environment and in some cases, this is difficult or impossible.
A second option available when developing code for a target computer system is to use a cross compiler, which is a compiler that executes on one type of computer system but creates executable programming code for a second type of computer system. This may be the only option where the target computer system is too small to have a self-contained editor and compiler. When the target computer system is itself a larger computer system, cross compilers are not often available, so this option is not feasible.
There is need in the art then for a system that will allow development of code on one computer system while targeting a second computer system or more than one computer system. There is further need in the art for such a system that sends the code to the target computer system to be compiled, thus avoiding the need for a cross compiler. A further need is for such a system that retains the user environment of the development computer system while developing code for more than one target computer system. The present invention meets these and other needs in the art.